Docker Dokerfile创建SSH服务镜像

1 创建工作目录

  1. 首先,创建一个 sshd_centos 工作目录:
mkdir sshd_centos
ls
  1. 其中,创建Dockerfile和run.sh文件:
cd sshd_centos 
touch Dockerfile run.sh
ls

2 编写 run.sh 脚本和 authorized_keys 文件

  1. 编辑 run.sh 脚本。
cd sshd_centos 
vi run.sh
/usr/sbin/sshd -D
  1. 在宿主机上生成SSH秘钥对,并创建 authorized_keys 文件:
ssh-keygen  -t rsa 
cat ~/.ssh/id_rsa.pub > authorized_keys 

3 编写 Dockerfile

# 设置初始镜像
FROM centos:7.2.1511 
MAINTAINER kingbase (kingbase@kingbase.com.cn)
# 下面开始运行更新命令
RUN yum install -y passwd openssh openssh-server net-tools
RUN mkdir -p /var/run/sshd
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' 
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' 
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN mkdir -p /root/.ssh
# 取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
RUN echo "root" | passwd --stdin root
ADD authorized_keys  /root/.ssh/authorized_keys 
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 开放端口
EXPOSE 22
CMD ["/run.sh"]

4 创建镜像

sshd_centos 目录下,使用 docker build 命令来创建镜像。

cd sshd_centos
docker build --no-cache -t sshd:latest .

5 测试镜像,运行容器

docker run -d -p 10000:22 sshd:latest  /run.sh
docker ps

6 连接容器的SSH服务

在宿主主机或其他主机上上,可以通过 SSH 访问 10000 端口来登录容器。

ssh root@192.168.10.235 -p 10000